<?php 
defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * 通行证控制器-后台
 * 
 * @version 1.0.0 
 * @author Jason
 * @date 2017年4月25日 下午3:38:22
 * 
 * @desc    完善文档注释
 * @version 1.1.0
 * @date	2017年6月27日 下午5:41:36
 * 
 * @title 管理员通行证
 * @entry http://discovery.segway.com
 */
class Passport extends MY_Manager_Controller
{
	// Must be public!!!
	/** @var Lib_passport */
	public $lib_passport = null;
	
	public function __construct()
	{
		parent::__construct();
		
		$this->load->library('lib_passport');
		
		$this->lang->load('passport');
	}
	
	/**
	 * 用户登录接口
	 * 
	 * @desc    用户登录，POST请求
	 * @method  POST
	 * @author  Jason
	 * @date    2017年4月26日 下午2:31:01
	 * @param   $name, $password, $remember
	 * @return  JSON	标准JSON格式响应
	 * 
	 * @link    /manage/passport/ajax_login
	 * 
	 * @command noneurl
	 */
	public function ajax_login()
	{
		list($status, $content) = $this->lib_passport->manager_login();
		
		if(!$status) {
			if (empty($content)) {
				$content = ['passport_msg_login_faild'];
			}
			$messageContent = Lib_json::getMessageContent($content);
			Lib_json::renderError(Lib_json::ERROR_BUSINESS, current($content), $messageContent);
		} else {
			// 处理登录
			$this->login_member_handler($content);
			Lib_json::renderSuccess(['data' => $content], 'passport_msg_login_success');
		}
	}
	
	/**
	 * 用户退出接口
	 *
	 * @desc    用户退出，POST请求
	 * @method  POST
	 * @author  Jason
	 * @date    2017年4月26日 下午2:31:01
	 * @param   $name, $password, $remember
	 * @return  JSON	标准JSON格式响应
	 *
	 * @link    /manage/passport/ajax_logout
	 *
	 * @command noneurl
	 */
	public function ajax_logout()
	{
		// 处理注销(退出登录)
		$this->logout_member_handler();
		Lib_json::renderSuccess([], 'passport_msg_logout_success');
	}
	
	
	
	/**
	 * 用户登录凭据处理
	 * 
	 * @param array $member
	 */
	private function login_member_handler($member)
	{
		// 角色信息
		$member['MEMBER_ROLE'] = 'MANAGER';
		$member['is_manager'] = true;
		
		// 设置 SESSION
		// 隔离 session 与子控制器，不让子控制器与基类 session 直接交互
		$this->session_construct_handler($member);
	}
	
	/**
	 * 用户退出凭据处理
	 */
	private function logout_member_handler()
	{
		/* // $this->cookie_token_destruct_handler(); */
		$this->session_destruct_handler();
	}
	
	
	/**
	 * 用户登录界面
	 *
	 * @desc    用户登录界面，同步登录
	 * @method  POST
	 * @author  Jason
	 * 
	 * @return  html
	 *
	 * @link    /manage/passport/login
	 */
	public function login()
	{
		$data = [];
		
		$post = $this->input->post();
		if (!empty($post)) {
			list($status, $content) = $this->lib_passport->manager_login();
				
			if(!$status) {
				if (empty($content)) {
					$content = ['passport_msg_login_faild'];
				}
				$messageContent = Lib_json::getMessageContent($content);
				$this->load->vars('errors', $messageContent);
			} else {
				// 处理登录
				$this->login_member_handler($content);
				$back_url = $this->input->get_post('back_url');
				$back_url = $back_url ? $back_url : site_url();
				redirect($back_url);
				return true;
			}
		}
		
		$this->load->view('manager/passport/login', $data);
	}
	
	/**
	 * 修改密码
	 *
	 * @method  POST
	 * @author  Jason
	 * @date	2017年6月16日 下午7:01:54
	 *
	 * @param   string $opassword
	 * @param   string $password
	 * @param   string $opassconf
	 *
	 * @return  JSON	标准JSON格式响应
	 *
	 * @link    /manager/passport/ajax_change_password
	 * 
	 * @command noneurl
	 */
	public function ajax_change_password()
	{
		list($status, $content) = $this->lib_passport->change_password();
	
		if(!$status) {
			Lib_json::renderError(Lib_json::ERROR_BUSINESS, current($content));
		} else {
			Lib_json::renderSuccess(['data' => $content]);
		}
	}
	
	
}